package com.cg.mapper;

import com.cg.entity.Region;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 地区Mapper接口
 */
@Mapper
public interface RegionMapper {
    
    /**
     * 获取所有省份
     * @return 省份列表
     */
    @Select("SELECT * FROM region WHERE level = 'province' ORDER BY code")
    List<Region> getProvinces();
    
    /**
     * 根据父级代码获取城市
     * @param parentCode 父级代码
     * @return 城市列表
     */
    @Select("SELECT * FROM region WHERE level = 'city' AND parent_code = #{parentCode} ORDER BY code")
    List<Region> getCitiesByProvince(String parentCode);
    
    /**
     * 根据父级代码获取区县
     * @param parentCode 父级代码
     * @return 区县列表
     */
    @Select("SELECT * FROM region WHERE level = 'district' AND parent_code = #{parentCode} ORDER BY code")
    List<Region> getDistrictsByCity(String parentCode);
    
    /**
     * 根据代码获取地区信息
     * @param code 地区代码
     * @return 地区信息
     */
    @Select("SELECT * FROM region WHERE code = #{code}")
    Region getByCode(String code);
    
    /**
     * 根据名称模糊查询地区
     * @param name 地区名称
     * @return 地区列表
     */
    @Select("SELECT * FROM region WHERE name LIKE CONCAT('%', #{name}, '%') ORDER BY level, code")
    List<Region> searchByName(String name);
}
